home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / gui / VisualArts2_2.lha / VisualArts / Demos / Source / CustomImage / CustomImage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-02  |  5.7 KB  |  243 lines

  1. /* ******************************************************************** */
  2. /* C code generated by:                            */
  3. /* Visual Arts Version 2.1                        */
  4. /* Copyright 1994-95 Danny Y. Wong  All rights reserved            */
  5. /* Calgary, Alberta (CANADA)                                    */
  6. /* Partial of the code is copyright by Jaba Development            */
  7. /* ******************************************************************** */
  8.  
  9. #include <VisualArts.h>
  10. #include <clib/VisualArts_protos.h>
  11.  
  12. #define ID_ObjID6                                     0
  13.  
  14. #define CustomNumGads                        1
  15.  
  16. #include "CustomImage_func.c" 
  17.  
  18. #include "CustomImage_images.c" 
  19.  
  20. int ObjID6Obj(struct VAobject VAObject);
  21.  
  22. int SetupScreen(void);
  23. void CloseDownScreen(void);
  24. int OpenCustomWindow(char windtitle[]);
  25. void CloseCustomWindow(void);
  26. int CustomHandler(void);
  27. int CustomMainHandler(void);
  28. void DrawCustomObjs(void);
  29. int main(int argc, char *argv[]);
  30.  
  31. struct Screen            *PubScr = NULL;
  32. struct DrawInfo            *ScrDrawInfo = NULL;
  33. APTR                 VisualInfo = NULL;
  34. struct Screen            *Scr = NULL;
  35. struct Window            *CustomWnd = NULL;
  36. struct Gadget            *CustomGList = NULL;
  37. struct Gadget            *CustomGadgets[CustomNumGads];
  38. struct IntuiMessage         CustomMsg;
  39. UWORD                 CustomLeft = 122;
  40. UWORD                 CustomTop = 17;
  41. UWORD                 CustomWidth = 332;
  42. UWORD                 CustomHeight = 156;
  43. struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
  44. struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
  45.  
  46. WORD CustomGadTypes[] = {
  47.     BUTTON_KIND,
  48. };
  49.  
  50. struct NewGadget CustomNGads[] = {
  51.     115, 126, 87, 13, (UBYTE *)"Button",&topaz800, ID_ObjID6, PLACETEXT_IN, NULL, (APTR)ObjID6Obj,
  52. };
  53.  
  54. ULONG CustomNTags[] = {
  55.     TAG_DONE,
  56. };
  57.  
  58. int SetupScreen(void)
  59. {
  60.   struct ViewPort *viewport;
  61.  
  62.   PubScr = LockPubScreen("Workbench");
  63.   if (PubScr != NULL)
  64.   {
  65.     ScrDrawInfo = GetScreenDrawInfo(PubScr);
  66.     if (!(Scr = OpenScreenTags(NULL,
  67.         SA_Left,    0,
  68.         SA_Top,     0,
  69.         SA_Width,    640,
  70.         SA_Height,    200,
  71.         SA_Depth,    4,
  72.         SA_Font,    &topaz800,
  73.         SA_Type,    CUSTOMSCREEN,
  74.         SA_DisplayID,    102400,
  75.         SA_AutoScroll,    TRUE,
  76.         SA_Overscan,    2,
  77.         SA_Pens,    (ULONG)(ScrDrawInfo->dri_Pens),
  78.         SA_Title,    "Visual Arts V2.2 Copyright 1994-95 Danny Y. Wong  All Rights Reserved.", 
  79.         TAG_DONE)))
  80.         return(1L);
  81.   }
  82.   else
  83.     return(1L);
  84.  
  85.   if (!(VisualInfo =  GetVisualInfo(Scr, TAG_DONE)))
  86.     return(2L);
  87.   viewport = (struct ViewPort *)&Scr->ViewPort;
  88.   LoadRGB4(viewport, (UWORD *)&CustomColorMap, 32);
  89.   return(0L);
  90. }
  91.  
  92. void CloseDownScreen(void)
  93. {
  94.   if (ScrDrawInfo)
  95.     FreeScreenDrawInfo(PubScr, ScrDrawInfo);
  96.   if (VisualInfo)
  97.     FreeVisualInfo(VisualInfo);
  98.   if (Scr)
  99.     CloseScreen(Scr);
  100.   if (PubScr)
  101.     UnlockPubScreen(NULL, PubScr);
  102. }
  103.  
  104. int OpenCustomWindow(char windtitle[80])
  105. {
  106.   struct NewGadget    NewGad;
  107.   struct Gadget       *Gad;
  108.   register UWORD i, j;
  109.   UWORD offsetx = Scr->WBorLeft;
  110.   UWORD offsety = Scr->WBorTop + Scr->Font->ta_YSize + 1;
  111.  
  112.   if (!(Gad = CreateContext(&CustomGList)))
  113.       return(1L);
  114.  
  115.   for (i=0, j=0; i < CustomNumGads; i++)
  116.   {
  117.     CopyMem((char *)&CustomNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
  118.  
  119.     NewGad.ng_VisualInfo = VisualInfo;
  120.     NewGad.ng_LeftEdge += offsetx;
  121.     NewGad.ng_TopEdge  += offsety;
  122.  
  123.     CustomGadgets[i] = Gad = CreateGadgetA((ULONG)CustomGadTypes[i], Gad, &NewGad,
  124.     (struct TagItem *)&CustomNTags[j]);
  125.     while (CustomNTags[j])
  126.         j +=2;
  127.     j++;
  128.     if (!Gad)
  129.        return(2L);
  130.   }
  131.   if (!(CustomWnd = OpenWindowTags(NULL,
  132.       WA_Left,    CustomLeft,
  133.       WA_Top,     CustomTop,
  134.       WA_Width,    CustomWidth,
  135.       WA_Height,    CustomHeight + kWindowOffSetY,
  136.       WA_NewLookMenus, TRUE,
  137.       WA_IDCMP,    IDCMP_CLOSEWINDOW |  IDCMP_NEWSIZE | IDCMP_GADGETUP ,
  138.       WA_Flags,    WFLG_CLOSEGADGET | WFLG_DEPTHGADGET  |  WFLG_SMART_REFRESH | 
  139.              WFLG_ACTIVATE |  WFLG_DRAGBAR ,
  140.       WA_Gadgets,    CustomGList,
  141.       WA_Title,    windtitle,
  142.       WA_ScreenTitle,    "Visual Arts V2.2 Copyright 1994-95 Danny Y. Wong  All Rights Reserved.",
  143.       WA_CustomScreen,    Scr,
  144.       WA_MinWidth,    160,
  145.       WA_MinHeight,    50,
  146.       WA_MaxWidth,    640,
  147.       WA_MaxHeight,    200,
  148.       TAG_DONE)))
  149.           return(3L);
  150.  
  151.   DrawImage(CustomWnd->RPort, &ninja900_brushImage, 8, 13 + kWindowOffSetY);
  152.   DrawImage(CustomWnd->RPort, &robotImage, 170, 15 + kWindowOffSetY);
  153.   DrawImage(CustomWnd->RPort, &porsche_brushImage, 10, 93 + kWindowOffSetY);
  154.   GT_RefreshWindow(CustomWnd, NULL);
  155.   RefreshGadgets(CustomGadgets[0], CustomWnd, NULL);
  156.   return(0L);
  157. }
  158.  
  159. void CloseCustomWindow(void)
  160. {
  161.   if (CustomWnd)
  162.     CloseWindow(CustomWnd);
  163.   if (CustomGList)
  164.     FreeGadgets(CustomGList);
  165. }
  166.  
  167. int CustomHandler(void)
  168. {
  169.   struct IntuiMessage    *msg;
  170.   struct VAobject    VAObject;
  171.   int running    = 1;
  172.   int (*func)(struct VAobject VAObject);
  173.   ULONG class;
  174.   UWORD code;
  175.  
  176.   while (msg=GT_GetIMsg(CustomWnd->UserPort))
  177.   {
  178.     CopyMem((char *)msg, (char *)&CustomMsg, (long)sizeof(struct IntuiMessage));
  179.     class = msg->Class;
  180.     code  = msg->Code;
  181.  
  182.     VAObject.va_Window = (struct Window *)CustomWnd;
  183.     VAObject.va_Gadget = (struct Gadget *)msg->IAddress;
  184.     VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
  185.     VAObject.va_Flags = 0;
  186.     VAObject.va_UserData = 0;
  187.  
  188.     GT_ReplyIMsg(msg);
  189.     switch(class)
  190.     {
  191.  
  192.       case IDCMP_NEWSIZE:
  193.        break;
  194.  
  195.       case IDCMP_CLOSEWINDOW:
  196.          return(0);
  197.          break;
  198.  
  199.       case IDCMP_GADGETUP:
  200.         func = (void *)((struct Gadget *)CustomMsg.IAddress)->UserData;
  201.         if (func != NULL)
  202.           running =  func(VAObject);
  203.         break;
  204.  
  205.     }
  206.   }
  207.   return(running);
  208. }
  209.  
  210. int CustomMainHandler(void)
  211. {
  212.   int running = 1;
  213.   ULONG windsig, signals;
  214.  
  215.   windsig = 1L << CustomWnd->UserPort->mp_SigBit;
  216.  
  217.   while (running == 1)
  218.   {
  219.     signals = Wait( windsig );
  220.     if (signals & windsig)
  221.     {
  222.       running = CustomHandler();
  223.     }
  224.   }
  225.   return(running);
  226. }
  227.  
  228. int main(int argc, char *argv[])
  229. {
  230.   int rc;
  231.  
  232.   if (!(SetupScreen()))
  233.   {
  234.     if (!(OpenCustomWindow("Custom Image Demo")))
  235.     {
  236.       rc = CustomMainHandler();
  237.       CloseCustomWindow();
  238.     }
  239.     CloseDownScreen();
  240.   }
  241.   return(0L);
  242. }
  243.